package portal.entidades;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name = "Compras")
public class Compra implements Serializable {
	
	private static final long serialVersionUID = -4009862419614241414L;

	public Compra() {
		super();
	}

	public Compra(String idModulo, double cordenadaX, double cordenadaY,
			String fecha, double montoTotal, String estado, Usuario usuario,
			List<ItemCompra> items) {
		super();
		this.idModulo = idModulo;
		this.cordenadaX = cordenadaX;
		this.cordenadaY = cordenadaY;
		this.fecha = fecha;
		this.montoTotal = montoTotal;
		this.estado = estado;
		this.usuario = usuario;
		this.items = items;
	}

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "Id_Compra")
	private Long id;

	@Column(name = "Id_Modulo", length = 20)
	private String idModulo;

	@Column(name = "CordenadaX")
	private double cordenadaX;

	@Column(name = "CordenadaY")
	private double cordenadaY;

	@Column(name = "Fecha", length = 20)
	private String fecha;

	@Column(name = "MontoTotal")
	private double montoTotal;

	@Column(name = "Estado", length = 100)
	private String estado;

	@OneToOne
	private Usuario usuario;

	@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
	@JoinColumn(name = "Id_Compra")
	private List<ItemCompra> items = new ArrayList<ItemCompra>();

	// Getter && Setters

	public String getIdModulo() {
		return idModulo;
	}

	public void setIdModulo(String idModulo) {
		this.idModulo = idModulo;
	}

	public double getCordenadaX() {
		return cordenadaX;
	}

	public void setCordenadaX(double cordenadaX) {
		this.cordenadaX = cordenadaX;
	}

	public double getCordenadaY() {
		return cordenadaY;
	}

	public void setCordenadaY(double cordenadaY) {
		this.cordenadaY = cordenadaY;
	}

	public String getFecha() {
		return fecha;
	}

	public void setFecha(String fecha) {
		this.fecha = fecha;
	}

	public double getMontoTotal() {
		return montoTotal;
	}

	public void setMontoTotal(double montoTotal) {
		this.montoTotal = montoTotal;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public List<ItemCompra> getItems() {
		return items;
	}

	public void setItems(List<ItemCompra> items) {
		this.items = items;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

}
